// 导入路由对象
const express = require("express")
const router = express.Router()//创建路由
// 导入控制器类
const Article = require("../controllers/articleController")
const articleObj = new Article()
const Jwt = require("../common/jwt")

// 编写接口
// 发布文章
// 请求地址：http://localhost:3001/api/article/publish
// 请求方式：POST
// 参数： title, author, cate, cate_name, content, src, tag , token (可通过headers提交)
router.post("/publish", async (req, res) => {
    // 接收前端提交的参数
    let { title, author, cate, cate_name, content, src, tag } = req.body;
    let token = req.headers.token || req.body.token;

    if (token == undefined || title == undefined || author == undefined || cate == undefined || cate_name == undefined || content == undefined || src == undefined || tag == undefined) {
        res.send({
            code: -1,
            msg: "缺少参数",
            params: { title, author, cate, cate_name, content, src, tag }
        })
    }
    else {
        // 校验token 判断管理员是否登录
        let result = new Jwt(token).verifyToken();
        if (result.code == 200) {
            // 发布文章的操作
            await articleObj.publish(title, author, cate, cate_name, content, src, tag)
                .then(
                    result => {
                        res.status(200).json(result);
                    },
                    err => {
                        res.status(500).json(err)
                    }
                )
        }
        else {
            res.status(400).json({ msg: "您尚未登录" })
        }
    }

})

// 文章列表
// 请求方式：POST
// 请求地址：http://localhost:3001/api/article/items 
// 参数：page_num, page_size
router.post("/items", async (req, res) => {

    // 获取token
    let { page_num, page_size } = req.body
    if (page_num == undefined || page_size == undefined) {
        res.status(404).json({ msg: "缺少参数" })
    }
    else {

        await articleObj.items(page_num, page_size)
            .then(
                result => {
                    res.status(200).json(result);
                },
                err => {
                    res.status(500).json(err)
                }
            )
    }
})

// 删除文章
// 请求方式：POST
// 请求地址：http://localhost:3001/api/article/delete (管理员删除文章)
// 参数：id （文章id） token（管理员的token）
router.post("/delete", async (req, res) => {
    // console.log("test11111")
    // 获取token
    let id = req.body.id // 
    let token = req.headers.token;// req.body.token
    if (id == undefined || token == undefined) {
        res.status(404).json({ msg: "缺少参数" })
    }
    else {
        // 校验token 判断管理员是否登录
        let result = new Jwt(token).verifyToken();
        if (result.code == 200) {
            // 删除文章的操作
            await articleObj.remove(id)
                .then(
                    result => {
                        res.status(200).json(result);
                    },
                    err => {
                        res.status(500).json(err)
                    }
                )
        }
        else {
            res.status(400).json({ msg: "您尚未登录" })
        }
    }
})

// 搜索文章
// 请求方式：POST
// 请求地址：http://localhost:3001/api/article/search 
// 参数：keyword
router.post("/search", async (req, res) => {
    // 获取token
    let { keyword } = req.body
    if (keyword == undefined) {
        res.status(404).json({ msg: "缺少参数" })
    }
    else {
        await articleObj.search(keyword)
            .then(
                result => {
                    res.status(200).json(result);
                },
                err => {
                    res.status(500).json(err)
                }
            )
    }
})

// 查看文章详情
// 请求方式：POST
// 请求地址：http://localhost:3001/api/article/detail
// 参数：id
router.post("/detail", async (req, res) => {
    // 获取token
    let { id } = req.body
    if (id == undefined) {
        res.status(404).json({ msg: "缺少参数" })
    }
    else {
        await articleObj.detail(id)
            .then(
                result => {
                    res.status(200).json(result);
                },
                err => {
                    res.status(500).json(err)
                }
            )
    }
})

// 修改文章
// 请求方式：POST
// 请求地址：http://localhost:3001/api/article/modify (管理员修改)
// 参数：title, author, cate, cate_name, content, src, tag, id
router.post("/modify", async (req, res) => {
    // 获取token
    let { title, author, cate, cate_name, content, src, tag, id } = req.body
    if (title == undefined || author == undefined || cate == undefined || cate_name == undefined || content == undefined || src == "" || tag == undefined || id == undefined) {
        res.status(404).json({ msg: "缺少参数" })
    }
    else {
        let token = req.headers.token // || req.body.token;
        if (token == undefined) {
            res.status(404).json({ msg: "缺少参数" })
        }
        else {
            let result = new Jwt(token).verifyToken();
            if (result.code == 200) {
                await articleObj.modify(title, author, cate, cate_name, content, src, tag, id) // 此处的id是普通用户的id
                    .then(
                        result => {
                            res.status(200).json(result);
                        },
                        err => {
                            res.status(500).json(err)
                        }
                    )
            }
            else {
                res.status(400).json({ msg: "您尚未登录" })
            }
        }
    }
})

router.post('/list', async (req, res) => {
    await articleObj.list().then(
        result => {
            res.status(200).json(result)
        },
        err => {
            res.status(500).json(err)
        }
    )
})



// 暴露文章路由
module.exports = router;